<%--
    Document   : NuevaAsignacionRoutersRed
    Author     : José Manuel
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<%@page import="java.util.*"%>
<%@page import="proyectoCisco.Usuario"%>
<%@page import="proyectoCisco.Router"%>
<%@page import="proyectoCisco.Router"%>
<%@page import="proyectoCisco.Red"%>
<%@page import="proyectoCisco.claseBBDD"%>
<%@page import="proyectoCisco.RedRouter"%>
<%@page import="java.io.File"%>
<%@page import="org.apache.commons.fileupload.*"%>
<%@page import="org.apache.commons.fileupload.FileUploadException"%>
<%@page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%>
<%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>
<%@page import="org.apache.commons.fileupload.FileItem"%>

<html>
    <head>
        <link href="estilos.css" rel="stylesheet" type="text/css">
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Nueva asignacion de routers a red</title>
    </head>
    <body>
     <%
        int valor,valor1;
        claseBBDD baseDatos = new claseBBDD();
        ArrayList<Router> routersAAsignar = new ArrayList<Router>();
        Router nuevoRouter;
        String routers="",mensaje="",red="",nombreAntiguoRed="";
        Red red1 = new Red();
        Red nueva = new Red();
        RedRouter redRouter = new RedRouter();
        
        if (session.getAttribute("login") != null && ((String) session.getAttribute("login")).length() > 0)
        {
            boolean isMultipart = ServletFileUpload.isMultipartContent(request);
            // Creamos los objetos para procesar los archivos
            FileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload upload = new ServletFileUpload(factory);
            // items es un arreglo de objetos FileItem.
            List  items = upload.parseRequest(request);
            Iterator iter = items.iterator();
            while (iter.hasNext())
            {
              FileItem item = (FileItem) iter.next();

              if (item.isFormField())
              {
                // aqui va el codigo si el objeto no es un archivo
               // sino un campo del formulario
                  String name = item.getFieldName();
                  if(name.equals("param"))
                  {
                      routers=(String)item.getString();
                  }
                  if(name.equals("nombreRed"))
                  {
                      red=(String)item.getString();
                  }
                  if(name.equals("nombreAntiguoRed"))
                  {
                      nombreAntiguoRed=(String)item.getString();
                  }
              }
              else
              {
                  // Si cambiamos la imagen
                  if(red.equals(nombreAntiguoRed) && item.getName()!="")
                  {
                      String dirPath = getServletContext().getRealPath("/images/redes/");
                      String nombreFichero = red + ".jpg";
                      File nuevo = new File( dirPath, red+".jpg" );
                      // Escribimos datos en el nuevo fichero
                      item.write(nuevo);
                  }
                  else
                  {
                      // Si cambiamos solo el nombre
                      if(!red.equals(nombreAntiguoRed) && red!="" && nombreAntiguoRed!="" && item.getName()=="")
                      {
                        String dirPath = getServletContext().getRealPath("/images/redes/");
                        String nombreFichero = dirPath+"/"+nombreAntiguoRed + ".jpg";
                        String nombreFicheroNuevo = dirPath+"/"+red + ".jpg";
                        // Renombraremos la imagen de la red
                        File f = new File(nombreFichero); // backup of this source file.
                        //File fBorrar = new File(nombreFichero);
                        // Rename the backup file to "junk.dat"
                        // Renaming requires a File object for the target.
                        f.renameTo(new File(nombreFicheroNuevo));
                        // Borramos la imagen anterior
                        //fBorrar.delete();
                      }
                      // Si cambiamos la imagen y el nombre
                      else if(item.getName()!="" && !red.equals(nombreAntiguoRed))
                      {
                          // cambiamos solo la imagen
                          String dirPath = getServletContext().getRealPath("/images/redes/");
                          String nombreFichero = dirPath+"/"+nombreAntiguoRed + ".jpg";
                          String nombreFicheroNuevo = dirPath+"/"+red + ".jpg";
                          File fBorrar = new File(nombreFichero);
                          fBorrar.delete();
                          File f = new File(nombreFicheroNuevo); // backup of this source file.
                          item.write(f);
                      }
                  }
              }
            }

            // Tokenizamos todos los routers a asignar
            StringTokenizer tokens = new StringTokenizer(routers);
            while(tokens.hasMoreTokens())
            {
                nuevoRouter = new Router();
                nuevoRouter.setIp(tokens.nextToken());
                routersAAsignar.add(nuevoRouter);
            }

            if(!red.equals(nombreAntiguoRed))
            {
                // Borramos la red
                red1.setNombre(nombreAntiguoRed);
                redRouter.setNombreRed(nombreAntiguoRed);
                valor=baseDatos.borrarRegistro("redRouter", redRouter);
                valor1=baseDatos.borrarRegistro("red", red1);
                // Creamos la red con otro nombre o el mismo
                nueva.setNombre(red);
                baseDatos.insertarRegistro("red", nueva);
            }

            // AQUI ASIGNAMOS CON UNA FUNCION DE BBDD LOS ROUTERS AL USUARIO
            mensaje=baseDatos.asignarRoutersRed(red, routersAAsignar);

                if(mensaje.equals("ok"))
                {
                %>
                <table width="350" border="1" id="tablaRouters">
                     <caption>Listado de routers asignados a la red <%=red%></caption>
                     <thead>
                       <tr>
                         <th width="138" align="center">ROUTER</th>
                       </tr>
                     </thead>
                     <tbody>
                     <%
                     for(int i=0;i<routersAAsignar.size();i++){
                     %>
                       <tr>
                           <td width="138" align="center"> <%= routersAAsignar.get(i).getIp() %> </td>
                       </tr>
                     <%
                     }
                     %>
                     <td> <a class="user" href="modificarRed.jsp"> Volver </a> </td>
                     </tbody>
                </table>
            <%
        }
        else
        {
        %>
          <h1>Error: <%=mensaje%> </h1>
          <a class="user" href="modificarRed.jsp"> Volver </a>
        <%
        }
       }
        else
        {
        %><META HTTP-EQUIV="REFRESH" CONTENT="1;URL=error.jsp">
        <%
        }
        %>
      </body>
</html>
